/// 全限定修饰符
struct S(i32);

trait A {
    fn test(&self, i: i32);
}

trait B {
    fn test(&self, i: i32);
}

impl A for S {
    fn test(&self, i: i32) {
        println!("From A: {}", self.0);
    }
}

impl B for S {
    fn test(&self, i: i32) {
        println!("From B: {}", self.0);
    }
}

pub fn start() {
    let s = S(1);
    A::test(&s, 2);
    B::test(&s, 2);
    <S as A>::test(&s, 2);
    <S as B>::test(&s, 2);
}
